﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//3.打印素数
//方法1：
int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		int j = 0;
		int flag = 1;
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
		{
			printf("%d ", i);
		}
	}
	return 0;
}
//优化1：
int main()
{
	int i = 0;
	for (i = 101; i <= 200; i += 2)
	{
		int j = 0;
		int flag = 1;
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
		{
			printf("%d ", i);
		}
	}
	return 0;
}
//优化2：
#include <math.h>
int main()
{
	int i = 0;
	for (i = 101; i <= 200; i += 2)
	{
		int j = 0;
		int flag = 1;
		for (j = 2; j <= sqrt(i); j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
		{
			printf("%d ", i);
		}
	}
	return 0;
}


//4.判断三⻆形
 
int main()
{
	int a = 0, b = 0, c = 0;
	if (a + b > c && a + c > b && b + c > a)
	{
		if (a == b && b == c)
		{
			printf("等边三角形\n");
		}
		else if (a == b || a == c || b == c)
		{
			printf("等腰三角形\n");
		}
		else
		{
			printf("普通三角形\n");
		}
	}
	else
	{
		printf("非三角形\n");
	}
	return 0;
}


//5.计算最⼤公约数
//方法1：
int main()
{
	int m = 0, n = 0;
	scanf("%d %d", &m, &n);
	int k = 0;
  //找m和n的较小值
	//int k = (m > n ? n : m);
	if (m > n)
	{
		k = n;
	}
	else
	{
		k = m;
	}
	while (1)
	{
		if (m % k == 0 && n % k == 0)
		{
			break;
		}
		k--;
	}
	printf("%d\n", k);
	return 0;
}
//方法2：辗转相除
int main()
{
	int m = 0, n = 0;
	scanf("%d %d", &m, &n);
	int k = 0;
	while (k = m % n)
	{
		m = n;
		n = k;
	}
	printf("%d\n", n);
	return 0;
}
//辗转相除法递归实现 gcd(a,b)的结果为a和b的最⼤公约数
int gcd(int a, int b) 
{
    if (b == 0)          //特判除数为0时的情况
    {
        return a;
    }
    return gcd(b, a % b);//返回b和a%b的最⼤公约数
}


//6.打印最⼩公倍数
//方法1：
int main()
{
	int m = 0, n = 0;
	scanf("%d %d", &m, &n);
	int i = 0;
	int tmp = 0;
	int tmp = (m > n ? m : n);
	while (1)
	{
		if (tmp % m == 0 && tmp % n == 0)
		{
			printf("%d", tmp);
			break;
		}
		tmp++;
	}
	return 0;
}
//方法2；
int main()
{
	int m = 0, n = 0;
	scanf("%d %d", &m, &n);
	int i = 0;
	int tmp = 0;
	int tmp = m * n;
	while (tmp = m % n)
	{
		m = n;
		n = tmp;
	}
	printf("%d", tmp / n);
	return 0;
}


//7.分数求和
int main()
{
	int i = 0;
	double sum = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 != 0)
		{
			sum += 1.0 / i;
		}
		else
		{
			sum -= 1.0 / i;
		}
	}
	printf("%lf", sum);
	return 0;
}


//8.计算最⼤值和最⼩值的差值
//方法1：
int main()
{
	int arr[10] = { 0 };
	int max = 0, min = 10;
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (int i = 0; i < 10; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
		}
		if (arr[i] < min)
		{
			min = arr[i];
		}
	}
	printf("%d", max - min);
	return 0;
}
//方法2：
int main()
{
	int a = 0;
	int max = 0, min = 0;
	for (int i = 1; i < 10; i++)
	{
		scanf("%d", &a);
		if (a > max)
		{
			max = a;
		}
		if (a < min)
		{
			min = a;
		}
	}
	printf("%d", max - min);
	return 0;
}


//9.排序整形数组
int main()
{
	int arr[10] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (i = 0; i < sz - 1; i++)
	{
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
	for (i = 0; i < sz; i++)
	{
		printf("%d", arr[i]);
	}
	return 0;
}
//优化：
int main()
{
	int arr[10] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (i = 0; i < sz - 1; i++)
	{
		int j = 0;
		int flag = 1;
		for (j = 0; j < sz - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
				flag = 0;
			}
		}
		if (flag == 1)
		{
			break;
		}
	}
	for (i = 0; i < sz; i++)
	{
		printf("%d", arr[i]);
	}
	return 0;
}


//10.到底谁是盗窃者?
int main()
{
	int thief = 0;
	for (thief = 'a'; thief <= 'd'; thief++)
	{
		if ((thief != 'a') + (thief == 'c') + (thief == 'd') + (thief != 'd') == 3)
		{
			printf("盗窃者是：%c", thief);
		}
	}
	return 0;
}


